#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef struct node {
    struct node *prev;
    struct node *next;
    int data;
} link;

// 创建链表
void link_create(link **L);

// 按位置插入
int node_insert(link *L, int pos, int data);

// 按位置删除
int node_delete(link *L);

// 遍历链表
int link_show(link *L);

// 释放链表
int link_free(link **L);

// 按位置查找
int search_by_pos(link *L, int pos);

// 按数据查找
int search_by_data(link *L, int data);

// 按位置修改
int update_by_pos(link *L, int pos);

// 按数据修改
int update_by_data(link *L, int data);
